using System;
using System.Collections.Generic;
using System.ServiceModel;
using Xyz.Service.DataTransferObjects;

namespace Xyz.Service.ServiceContracts
{
    [ServiceContract(SessionMode = SessionMode.Required)]
    public interface IFlightService
    {
        [OperationContract]
        List<AirportDTO> GetAirports();

        [OperationContract]
        FlightDTO GetFlightStatus(String flightCode, DateTime FlightDate, String FlightAirport, bool IsArrival);

        [OperationContract]
        AircraftDTO getAircraftByFlightId(int flightId);

        [OperationContract]
        void InsertFlight(FlightDTO flight);

        [OperationContract]
        List<AircraftDTO> GetAircrafts();

        [OperationContract]
        List<TerminalDTO> GetTerminalByAirportId(string airportCode);

        [OperationContract]
        List<FlightDTO> GetFlights();

        [OperationContract]
        FlightDTO GetFlightByFlightId(int flightId);

        [OperationContract]
        void UpdateFlight(FlightDTO flight);

        [OperationContract]
        void DeleteFlight(int flightId);

        [OperationContract]
        List<FlightDTO> GetFlightsByFlightCode(string flightCode);

        [OperationContract(Name = "GetFlightByDepartureInfo")]
        List<FlightDTO> GetFlights(DateTime departureDate, String departureAirport, String arrivalAirport);
    }
}